// import router, { resetRouter } from '@/router'
import { login, logout, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import router, { resetRouter } from '@/router'
const avatar = require('@/assets/logo.png')
const state = {
    // token: getToken(),
    name: '',
    avatar: avatar,
    introduction: '',
    roles: []
}
const mutations = {
    SET_TOKEN: (state, token) => {
        state.token = token
    },
    SET_INTRODUCTION: (state, introduction) => {
        state.introduction = introduction
    },
    SET_NAME: (state, name) => {
        state.name = name
    },
    SET_AVATAR: (state, avatar) => {
        state.avatar = avatar
    },
    SET_ROLES: (state, roles) => {
        state.roles = roles
    }
}
const actions = {
    login({ commit }, userInfo) {
        const { username, password } = userInfo
        return new Promise((resolve, reject) => {
            login({ username: username.trim(), password: password }).then(response => {
                const { data } = response
                commit('SET_TOKEN', data.token)
                setToken(data.token)
                resolve()
            }).catch(error => {
                reject(error)
            })
        })
    },
    getInfo({ commit, state }) {
        return new Promise((resolve, reject) => {
            const { roles } = { roles: ['admin'] }
            commit('SET_ROLES', roles)
            resolve({ roles: ['admin'] })

            // getInfo(state.token).then(response => {
            //     const { data } = response

            //     if (!data) {
            //         reject('Verification failed, please Login again.')
            //     }

            //     const { roles, name, avatar, introduction } = data

            //     // roles must be a non-empty array
            //     if (!roles || roles.length <= 0) {
            //         reject('getInfo: roles must be a non-null array!')
            //     }

            //     commit('SET_ROLES', roles)
            //     commit('SET_NAME', name)
            //     commit('SET_AVATAR', avatar)
            //     commit('SET_INTRODUCTION', introduction)
            //     resolve(data)
            // }).catch(error => {
            //     reject(error)
            // })
        })
    },
    logout({ commit, state, dispatch }) {
        return new Promise((resolve, reject) => {
            logout(state.token).then(() => {
                commit('SET_TOKEN', '')
                commit('SET_ROLES', [])
                removeToken()
                resetRouter() // 还原路由

                // reset visited views and cached views
                // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
                // dispatch('tagsView/delAllViews', null, { root: true })

                resolve()
            }).catch(error => {
                reject(error)
            })
        })
    }
}
export default {
    namespaced: true,
    state,
    mutations,
    actions
}